1. Web Applications
With reference to FIG. 6, modem internet/intranet technology allows web browsers (13) running on client computers (11) to display internet pages that are stored on server computers (12). More precisely, there is a web server computer (12) connected to a client computer (11) through a computer network. The web server computer (12) runs some web server software (14) and the client computer runs a web browser (13). The internet pages are stored on the web server computer (12). In the classical internet approach, the web server software sends the internet pages unchanged to the browser. Alternatively, the web server can invoke a page generating program (e.g. a CGI-script) or server module (15) that dynamically generates the page, which is then sent to the browser.
Modern browsers (such as Netscape Navigator or Microsoft Explorer) understand that internet pages contain programs or can download and execute programs by some other means. In this way, internet applications can be created that work on client side. We are not concerned here with these kind of applications. The other approach for internet applications generates the pages dynamically on the server computer using page generating programs or server modules. When talking about server side internet/intranet applications, we mean applications working this way. Both server side and client side applications have their advantages and disadvantages, and both techniques are used heavily.
Server side internet/intranet applications can be created by writing programs or scripts that generate web pages to be sent to the client. However, creating these programs requires a lot of rather complex programming effort. In fact, even simple applications must be created by skilled programmers. Texts and graphic design are intermingled with the program code and so must also be maintained by programmers.
Embedded page languages partly avoid this problem by embedding server side programs into internet pages. The output of these embedded programs is inserted into the internet pages. In this way, dynamic content can be realized, i.e., the internet pages contain dynamically changing parts. Examples include page counters or the display of database information. However, all dynamic parts must be programmed. To create truly interactive pages, i.e., pages that react on user input, like database displays with scroll buttons, counters with reset button, shopping baskets, database search forms, data entry forms, etc., embedded page languages require that a processing routine be programmed to handle the user input.
2. Component Technologies
It is a common to build application programs by plugging together off-the-shelf components. Provided that the available components match the problem, applications can be created very quickly this way. In extreme cases, programming can be avoided by using existing components.
In many cases, however, the available components are not flexible enough to create an application that has exactly the desired functionality. Thus, flexibility is very important. The more flexible the components are, the more applications that can be created with the advantages of the component approach.
Component oriented programming enables the user to program or modify components. It is often combined with object oriented technology, which makes it is possible by inheritance to modify components in an efficient way. With component oriented programming, simple applications can be created without programming by reusing off the shelf components, and more complicated applications can be created less expensively because at least big parts can be done using off the shelf components and other parts can be done by user written components.
User written components provide a means to reuse program code several times which in itself is a huge benefit compared to classical programming, where it is known to be difficult to reuse existing parts.
3. Component Technology for Server-Based Internet Applications
We are concerned with the problem of using component based programming techniques for internet applications. There is client based component technology available, such as Active X or Java. In this case, the components are downloaded from the server and then executed on the client computer. Client-based technologies have certain disadvantages (complexity, long download times, security risks, slow connection to the database, etc.) that make server based technology very relevant.
Some HTML editors provide support for a fixed set of components on their pages. This is not component oriented programming since the user can not create his own components, add existing components or freely combine components and programs. Also, components cannot be nested and the number of components per page is fixed rather than dynamic.
4. Editors and Application Development Tools
Typical application programming is a cycle of edit, compile and test. An application programmer writes a program into a text file. From time to time, the program is compiled and the programmer can test to see if the program works as desired. If not, selected program text is changed and the cycle begins again. In this way, the programmer receives feedback on bugs only after compiling and testing. During programming, the developer must imagine how the final program works, which can be difficult and time consuming.
WYSIWYG application development (where applicable) avoids this development cycle. Ideally, the developer always has a running application on screen and can modify it directly. This simplifies development to such an extent that non-programmers can create certain kinds of applications. It is crucial, however, that the application shown during development is as similar to the final application as possible. If the final application is in fact different, users are forced to test the application in the real environment, which introduces a new kind of development cycle and thereby drastically reduces the benefit of WYSIWYG development.
WYSIWYG tools are common for web page design (the layout) but not for web application development. There are fine WYSIWYG development tools for GUI applications. The few WYSIWYG development tools available for server-based internet applications somehow simulate or abstract from the real browser and server environment. They do not really match the production environment with the disadvantage that the users need to test the application in the real environment again introducing a new development cycle. We do not know of tools that provide the user with a running application on screen, that can be edited at the same time.
5. Maintaining State
It is a well known problem to maintain the state of a connection from the browser to the server. In addition it is a problem on several web server architectures to maintain the state information. On some architectures (CGI) the user program stops after servicing a page request and looses all data.
However modern web and application servers provide solutions for these problems. ISSCs work on top of these solutions. We assume in the rest of this description that variables and heap data structures remain available throughout a user session.